home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Toolbox / Visual Basic Toolbox (P.I.E.)(1996).ISO / internet / weblibev / htmlpars.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-10-02  |  9.8 KB  |  226 lines

  1.  
  2. ///////////////////////////////////////////////////////////////////////////////
  3. // Copyright 1995 by Potomac Software, Inc. Use of this material is subject to
  4. // the terms and conditions of the software license agreement.
  5.  
  6. #ifndef __HTMLPARS_H__
  7. #define __HTMLPARS_H__
  8.  
  9. #include <windows.h>
  10.  
  11. #ifdef __cplusplus 
  12. extern "C" {
  13. #endif 
  14.  
  15. ///////////////////////////////////////////////////////////////////////////////
  16. // Numeric identifiers for each HTML tag (tool developer note: these must remain
  17. // in sync with internal lists stored in the DLL).
  18.  
  19. #define HTML_INVALID                0
  20. #define HTML_COMMENT                0x1000
  21.  
  22. // Text style bits, returned by GetTextAttr
  23. #define HTML_BOLD                    0x0000001L        // <B>                (HTML 2.0)
  24. #define HTML_ITALIC                    0x0000002L        // <I>
  25. #define HTML_UNDERLINE                0x0000004L        // <U>
  26. #define HTML_EMPHASIS                0x0000008L        // <EM>
  27. #define HTML_STRONG                 0x0000010L        // <STRONG>
  28. #define HTML_CITE                    0x0000020L        // <CITE>
  29. #define HTML_CODE                    0x0000040L        // <CODE>
  30. #define HTML_KEYBOARD                0x0000080L        // <KBD>
  31. #define HTML_SAMPLE                    0x0000100L        // <SAMP>
  32. #define HTML_STRIKE                    0x0000200L        // <STRIKE>
  33. #define HTML_VARIABLE                 0x0000400L        // <VAR>
  34. #define HTML_TYPEWRITER             0x0000800L        // <TT>
  35. #define HTML_LISTING                0x0001000L      // <LISTING>
  36. #define HTML_EXAMPLE                0x0002000L         // <XMP>
  37. #define HTML_PLAINTEXT              0x0004000L         // <PLAINTEXT>
  38. #define HTML_ARGUMENT                0x0008000L        // <ARG>            (HTML+)
  39. #define HTML_DEFINE                    0x0010000L        // <DFN>
  40. #define HTML_ABBREV                    0x0020000L        // <ABBREV>
  41. #define HTML_COMMAND                   0x0040000L         // <CMD>
  42. #define HTML_ACRONYM                0x0080000L        // <ACRONYM>
  43. #define HTML_PERSON                    0x0100000L        // <PERSON>
  44. #define HTML_QUOTATION                0x0200000L        // <Q>
  45. #define HTML_STRIKETHRU             0x0400000L         // <S>
  46. #define HTML_SUBSCRIPT              0x0800000L         // <SUB>
  47. #define HTML_SUPERSCRIPT            0x1000000L         // <SUP>
  48. #define HTML_BLINK                    0x2000000L        // <BLINK>            (Netscape)
  49.  
  50. // Empty tags, returned by GetTagType
  51. #define HTML_BASE                    1                // <BASE>            (HTML 2.0)
  52. #define HTML_ISINDEX                2                // <ISINDEX>
  53. #define HTML_LINK                   3                // <LINK>
  54. #define HTML_NEXTID                 4                // <NEXTID>
  55. #define HTML_META                     5                // <META>
  56. #define HTML_BR                      6                  // <BR>
  57. #define HTML_DD                       7                // <DD>
  58. #define HTML_DT                       8                // <DT>
  59. #define HTML_HR                      9                // <HR>
  60. #define HTML_IMG                      10                // <IMG>
  61. #define HTML_LI                      11                // <LI>
  62. #define HTML_P                      12                // <P>
  63. #define HTML_SELECT                    13                // <SELECT>    
  64. #define HTML_INPUT                    14                // <INPUT>
  65. #define HTML_TEXTAREA                15                // <TEXTAREA>
  66. #define HTML_OPTION                    16                // <OPTION>
  67. #define HTML_TD                        17                // <TD>             (HTML+)
  68. #define HTML_TH                        18                // <TH>
  69. #define HTML_TR                        19                // <TR>
  70. #define HTML_RENDER                    20                 // <RENDER>
  71. #define HTML_NOBR                    21                // <NOBR>            (Netscape)
  72. #define HTML_WBR                    22               // <WBR>
  73. #define HTML_BASEFONT               23              // <BASEFONT> 
  74.  
  75. // Must add 256 to container tags to differentiate between empty tags
  76. #define HTML_CONTAINER                (0x100)
  77. #define GETCONTAINER(x)                ((x) & (HTML_CONTAINER - 1))
  78. #define MAKECONTAINER(x)            ((x) | HTML_CONTAINER)
  79.  
  80. // Container Tags, returned by GetTagType
  81. #define HTML_HTML                    MAKECONTAINER(1)    // <HTML>            (HTML 2.0)
  82. #define HTML_HEAD                   MAKECONTAINER(2)     // <HEAD>
  83. #define HTML_TITLE                  MAKECONTAINER(3)       // <TITLE>
  84. #define HTML_A                        MAKECONTAINER(4)    // <A>
  85. #define HTML_ADDRESS                MAKECONTAINER(5)       // <ADDRESS>
  86. #define HTML_BLOCKQUOTE             MAKECONTAINER(6)    // <BLOCKQUOTE>
  87. #define HTML_BODY                   MAKECONTAINER(7)    // <BODY>
  88. #define HTML_DIR                    MAKECONTAINER(8)    // <DIR>
  89. #define HTML_DL                        MAKECONTAINER(9)    // <DL>
  90. #define HTML_H1                       MAKECONTAINER(10)    // <H1>
  91. #define HTML_H2                       MAKECONTAINER(11)   // <H2>
  92. #define HTML_H3                       MAKECONTAINER(12)   // <H3>
  93. #define HTML_H4                       MAKECONTAINER(13)   // <H4>
  94. #define HTML_H5                       MAKECONTAINER(14)   // <H5>
  95. #define HTML_H6                       MAKECONTAINER(15)   // <H6>
  96. #define HTML_MENU                   MAKECONTAINER(16)   // <MENU>
  97. #define HTML_OL                      MAKECONTAINER(17)   // <OL>
  98. #define HTML_PRE                      MAKECONTAINER(18)   // <PRE>
  99. #define HTML_UL                        MAKECONTAINER(19)   // <UL>
  100. #define HTML_FORM                   MAKECONTAINER(20)   // <FORM>
  101. #define HTML_TABLE                  MAKECONTAINER(21)   // <TABLE>            (HTML+)
  102. #define HTML_CAPTION                MAKECONTAINER(22)   // <CAPTION>
  103. #define HTML_ABSTRACT               MAKECONTAINER(23)   // <ABSTRACT>
  104. #define HTML_FIG                     MAKECONTAINER(24)   // <FIG>
  105. #define HTML_FOOTNOTE               MAKECONTAINER(25)   // <FOOTNOTE>
  106. #define HTML_LIT                    MAKECONTAINER(26)   // <LIT>
  107. #define HTML_MARGIN                 MAKECONTAINER(27)   // <MARGIN>
  108. #define HTML_MATH                   MAKECONTAINER(28)   // <MATH>
  109. #define HTML_ONLINE                 MAKECONTAINER(29)   // <ONLINE>
  110. #define HTML_PRINTED                MAKECONTAINER(30)   // <PRINTED>
  111. #define HTML_NOTE                    MAKECONTAINER(31)    // <NOTE>
  112. #define HTML_FONT                   MAKECONTAINER(32)   // <FONT>            (Netscape)
  113. #define HTML_CENTER                 MAKECONTAINER(33)   // <CENTER>                
  114.  
  115. ///////////////////////////////////////////////////////////////////////////////
  116. // Flags that may be passed to API functions
  117.  
  118. // Flags for ParseFile and ParseBuf
  119. #define WL_KEEPATTRIBUTETAG            0x1
  120. #define WL_KEEPCLOSINGTAG             0x2
  121.  
  122. // Flags for GetSibling
  123. #define WL_FIRSTELEM                0x1
  124. #define WL_NEXTELEM                    0x2
  125. #define WL_PREVELEM                    0x3
  126. #define WL_LASTELEM                    0x4
  127.  
  128. // Flag for GetChild, Find and FindEnum to obtain root of parse tree
  129. #define WL_ROOTELEMENT                (NULL)
  130.  
  131. // Flags for GetElementType
  132. #define WL_ROOT                        0x0    
  133. #define WL_TAG                        0x1
  134. #define WL_SPECIALCHAR                0x2
  135. #define WL_COMMENT                    0x3
  136. #define WL_TEXT                       0x4
  137.  
  138. // Flags for GetTagAttrInfo
  139. #define WL_WORD                        0x1                                     
  140. #define WL_QUOTEDSTRING                0x2
  141. #define WL_NUMBER                      0x3
  142. #define WL_STANDALONE               0x4
  143.  
  144. // Flags for EnumFindText, EnumFindSpecial, EnumFindComment and EnumFindTagName
  145. #define WL_ENUMERATEALL                NULL
  146.  
  147. // Pre-defined enumeration notification messages included for convenience
  148. #ifndef WEBLIB_NO_PREDEFINEDMESSAGES
  149.  
  150. #define WM_WEBLIB_ENUMPARSETREE        (WM_USER + 1001)
  151. #define WM_WEBLIB_ENUMFINDTEXT        (WM_USER + 1002)
  152. #define WM_WEBLIB_ENUMFINDSPEC        (WM_USER + 1003)
  153. #define WM_WEBLIB_ENUMFINDCOMM        (WM_USER + 1004)
  154. #define WM_WEBLIB_ENUMFINDTAGTYPE    (WM_USER + 1005)
  155. #define WM_WEBLIB_ENUMFINDTAGNAME    (WM_USER + 1006)
  156. #define WM_WEBLIB_ENUMFINDTAGATTR    (WM_USER + 1007)
  157.  
  158. #endif
  159.  
  160. ///////////////////////////////////////////////////////////////////////////////
  161. // Typedefs for handles used by API.
  162.  
  163. typedef HLOCAL HPARSE;
  164. typedef DWORD  HELEMENT;
  165. typedef DWORD  HTAGATTR;
  166.  
  167. ///////////////////////////////////////////////////////////////////////////////
  168. // HTML API
  169.  
  170. HPARSE WINAPI WLHtmlParseFile(LPCSTR lpszFilename,WORD wOptions);
  171. HPARSE WINAPI WLHtmlParseBuf(LPCSTR lpszBuf,DWORD cbBuf,WORD wOptions);
  172. BOOL WINAPI WLHtmlEndParse(HPARSE hParse); 
  173.  
  174. BOOL WINAPI WLHtmlEnumParseTree(HPARSE hParse,HWND hwndNotify,UINT nMsg);
  175.  
  176. HELEMENT WINAPI WLHtmlGetChild(HPARSE hParse,HELEMENT hElement);
  177. HELEMENT WINAPI WLHtmlGetParent(HPARSE hParse,HELEMENT hElement);
  178. HELEMENT WINAPI WLHtmlGetSibling(HPARSE hParse,HELEMENT hElement,WORD wRel);
  179.  
  180. UINT WINAPI WLHtmlGetElementType(HPARSE hParse,HELEMENT hElement);
  181. LPCSTR WINAPI WLHtmlGetElementText(HPARSE hParse,HELEMENT hElement);
  182.  
  183. DWORD WINAPI WLHtmlGetTextAttr(HPARSE hParse,HELEMENT hElement);
  184.  
  185. LPCSTR WINAPI WLHtmlGetTagName(HPARSE hParse,HELEMENT hElement);
  186. UINT WINAPI WLHtmlGetTagType(HPARSE hParse,HELEMENT hElement);
  187.  
  188. HTAGATTR WINAPI WLHtmlGetTagAttr(HPARSE hParse,HELEMENT hElement,HTAGATTR hTagAttr,
  189.     WORD *pwType,LPSTR lpszAttr,UINT cbAttr,LPSTR lpszValue,UINT cbValue); 
  190. LPCSTR WINAPI WLHtmlExtractTagAttr(HPARSE hParse,HELEMENT hElement,LPSTR lpszAttr);    
  191.     
  192. HELEMENT WINAPI WLHtmlFindText(HPARSE hParse,HELEMENT hElement,LPCSTR lpszText);
  193. HELEMENT WINAPI WLHtmlFindSpecial(HPARSE hParse,HELEMENT hElement,LPCSTR lpszSpecial);
  194. HELEMENT WINAPI WLHtmlFindComment(HPARSE hParse,HELEMENT hElement,LPCSTR lpszCommentText);
  195.  
  196. HELEMENT WINAPI WLHtmlFindTagType(HPARSE hParse,HELEMENT hElement,UINT nType);
  197. HELEMENT WINAPI WLHtmlFindTagName(HPARSE hParse,HELEMENT hElement,LPCSTR lpszTag);
  198. HELEMENT WINAPI WLHtmlFindTagAttr(HPARSE hParse,HELEMENT hElement,UINT nType,
  199.     LPCSTR lpszAttr,LPCSTR lpszValue);
  200.  
  201. BOOL WINAPI WLHtmlEnumFindText(HPARSE hParse,HELEMENT hElement,LPCSTR lpszText,
  202.     HWND hwndNotify,UINT nMsg);
  203. BOOL WINAPI WLHtmlEnumFindSpecial(HPARSE hParse,HELEMENT hElement,LPCSTR lpszSpecial,
  204.     HWND hwndNotify,UINT nMsg);
  205. BOOL WINAPI WLHtmlEnumFindComment(HPARSE hParse,HELEMENT hElement,LPCSTR lpszCommentText,
  206.     HWND hwndNotify,UINT nMsg);
  207.  
  208. BOOL WINAPI WLHtmlEnumFindTagType(HPARSE hParse,HELEMENT hElement,UINT nType,
  209.     HWND hwndNotify,UINT nMsg);
  210. BOOL WINAPI WLHtmlEnumFindTagName(HPARSE hParse,HELEMENT hElement,LPCSTR lpszTag,
  211.     HWND hwndNotify,UINT nMsg);
  212. BOOL WINAPI WLHtmlEnumFindTagAttr(HPARSE hParse,HELEMENT hElement,UINT nType,
  213.     LPCSTR lpszAttr,LPCSTR lpszValueText,HWND hwndNotify,UINT nMsg);
  214.     
  215. ///////////////////////////////////////////////////////////////////////////////
  216. // Utility function to parse URL.
  217.  
  218. BOOL WINAPI WLParseAbsoluteURL(LPCSTR lpszURL,LPSTR lpszProtocol,UINT cbProtocol,
  219.     LPSTR lpszHost,UINT cbHost,UINT *pnPort,LPSTR lpszPath,UINT cbPath);
  220.  
  221. #ifdef __cplusplus 
  222. }
  223. #endif
  224.  
  225. #endif
  226.